﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using clBUS;
using clEntidad;
using System.IO;

namespace portero_
{
    public partial class frmFind : Form
    {
        public frmFind()
        {
            InitializeComponent();
            id = -1;
        }
        public int id { get; set; }
        private void frmFind_Load(object sender, EventArgs e)
        {
            tstbId.Focus();
            if (id != -1)
            {
                tstbId.Text = this.id.ToString();
                buscar();
            }
        }

        private void buscar()
        {
            try
            {
                if (tstbId.Text.StartsWith("I"))
                    tstbId.Text = tstbId.Text.Substring(1);
                this.id = Int32.Parse(tstbId.Text);
            }
            catch (FormatException)
            {

                this.id = -1;
            }
            catch (OverflowException )
            {
                this.id = -1;
            }
            BUSRegistro objBUS = new BUSRegistro(Constantes.CADENA_BD);
            Registro registro = objBUS.get(this.id);
            if (registro != null)
            {
                if (registro.idLocal == Constantes.LOCAL.id)
                {
                    tbNumDoc.Text = registro.persona.numDoc;
                    tbApePat.Text = registro.persona.apePat;
                    tbApeMat.Text = registro.persona.apeMat;
                    tbNombres.Text = registro.persona.nombres;

                    tbEmpresa.Text = registro.persona.empresa;
                    tbCargo.Text = registro.persona.cargo;

                    tbVisitado.Text = registro.persona.visitado.nombre;
                    tbUbicacion.Text = registro.persona.visitado.ubicacion;
                    tbArea.Text = registro.persona.visitado.area;
                    tbIn.Text = registro.entrada.ToString();
                    dgvEquipos.Rows.Clear();
                    foreach (Equipo equipo in registro.equipos)
                    {
                        int numRow = dgvEquipos.Rows.Add();
                        dgvEquipos.Rows[numRow].Cells["numserie"].Value = equipo.numSerie;
                        dgvEquipos.Rows[numRow].Cells["tipo"].Value = equipo.tipo;
                        dgvEquipos.Rows[numRow].Cells["marca"].Value = equipo.marca;
                        dgvEquipos.Rows[numRow].Cells["modelo"].Value = equipo.modelo;
                    }

                    if (registro.foto != null)
                    {
                        MemoryStream ms = new MemoryStream();
                        ms.Write(registro.foto, 0, registro.foto.GetUpperBound(0) + 1);
                        Pbx.Image = System.Drawing.Image.FromStream(ms);
                        ms.Close();
                    }
                    else
                    {
                        Pbx.Image = null;
                    }
                    if (!registro.salio)
                    {
                        tsbOut.Enabled = true;
                        //dgvEquipos.ReadOnly = false;
                    }
                    else
                    {
                        dgvEquipos.ReadOnly = true;
                        tbOut.Text = registro.salida.ToString();
                    }
                    tstbId.ReadOnly = true;
                    
                }
                else
                {
                    MessageBox.Show("Registro corresponde a otro local ", Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show("No existe registro con ID: " + this.id.ToString(), Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //this.Hide();
        }

        private void tbId_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                buscar();

        }

        private void frmFind_Shown(object sender, EventArgs e)
        {
            tstbId.Focus();
        }

        private void tstbId_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                buscar();

        }

        private void tsbSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void tsbOut_Click(object sender, EventArgs e)
        {
            String mensaje = "Confirma salida de : \n" +
                tbApePat.Text + " " +
                tbApeMat.Text + ", " +
                tbNombres.Text;
            if (MessageBox.Show(mensaje, Constantes.cNOMBRE_SIS, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                BUSRegistro objBUS = new BUSRegistro(Constantes.CADENA_BD);
                objBUS.salio(id, Constantes.USUARIO.idLogin);
                this.Close();
            }

        }

        private void frmFind_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.S && e.Modifiers == Keys.Control)
            {
                tsbOut_Click(sender, e);
            }

        }

        private void dgvEquipos_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 4)
            {
                if (dgvEquipos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
                {
                    String numSerOut = dgvEquipos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                    String numSerIn = dgvEquipos.Rows[e.RowIndex].Cells["NumSerie"].Value.ToString();
                    if (numSerIn.ToUpper().Equals(numSerOut.ToUpper()))
                    {
                        dgvEquipos.Rows[e.RowIndex].Cells["ok"].Value = "OK";
                    }
                    else
                    {
                        dgvEquipos.Rows[e.RowIndex].Cells["ok"].Value = "ERROR!";
                    }
                }
                else
                {
                    dgvEquipos.Rows[e.RowIndex].Cells["ok"].Value = "";
                }
            }
        }
    }
}
